package com.zrq.secondkill.service;

import com.zrq.secondkill.service.model.ItemModel;

import java.util.List;

public interface ItemService {
    /**
     * 返回所有商品的列表
     */
    List<ItemModel> listItem();


    /**
     * 返回商品信息
     */
    ItemModel getItemByIdInCache(Integer id);

    /**
     * 若库存足够,扣减redis中的库存
     *
     * @param itemId
     * @param amount
     * @return 操作是否成功
     */
    Boolean decreaseStockInRedisIfEnough(Integer itemId, Integer amount);


    /**
     * 若库存足够,扣减数据库中的库存
     *
     * @param itemId
     * @param amount
     * @return 操作是否成功
     */
    Boolean decreaseStockInDatabaseIfEnough(Integer itemId, Integer amount);

    /**
     * 创建库存扣减流水
     *
     * @param itemId
     * @param amount
     * @return
     */
    String initStockLog(Integer itemId,Integer amount);


    /**
     * 读取redis中商品库存的数量
     *
     * @param itemId
     * @return
     */
    Integer getItemStockInCache(Integer itemId);
}
